/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pl.swspiz;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 *
 * @author ko
 */
public class UnitUtils {
    Connection currentCon = null;
    ResultSet rs = null;
    Statement stmt = null;
//konstruktor - ustanowienie polaczenia z baza po utworzeniu obiektu
UnitUtils() throws SQLException {
 try {
      currentCon = ConnectionManager.getConnection();
      stmt = currentCon.createStatement();

      
      
      } catch(SQLException e){
      System.out.println("Wystapil blad polaczenia z baza;"+e);
      throw new SQLException(e);
      }
      finally {
       
      } //finally


}
//wyszukanie odpowiedniego mnoznika-wspolczynnika
private float findFactor(String name){
    float wsp =0;
    try {
rs = stmt.executeQuery("select * from jednostki where nazwa='"+name+"'");
      if (rs.next())
      wsp = rs.getFloat("wsp");
    } catch (Exception e){
    System.out.println("Wystapil blad podczas pobierania danych;"+e);
    }
 return wsp;
}
//zaokraglenie do 2 miejsc po przecinku
public float round(float val, int places) {
            long factor = (long)Math.pow(10,places);
            val = val * factor;
            long tmp = Math.round(val);
           return (float)tmp / factor;
        }
//konwersja cm do innej jednostki
public float cmToValue(float number, String type ){
    float v = 0;
    float result = 0;
    v = findFactor(type);
    if(v!=0)
        result = number/v;

 return round(result,2);
}
//konwersja jednostki miary na cm
public float valueToCm(float number, String type ){
    float v = 0;
    float result = 0;
    v = findFactor(type);
    if(v!=0)
        result = number*v;

 return round(result,2);
}

//konwersja pomiedzy jednostkami miar
public float convert(float number, String fromType, String toType){
    float result = 0;
 if (fromType.equals("centymetr")) {
 result = cmToValue(number,toType);
     
 } else

 {
    result = valueToCm(number,fromType);
    result = cmToValue(result,toType);
 }


   return result;
}

//zamykanie polaczenia przy kasowaniu obiektu
@Override
protected void finalize() throws Throwable{
   super.finalize();
   if (rs != null)	{
	            try {
	                rs.close();
	            } catch (Exception e) {}
	            rs = null;
	        }

	        if (stmt != null) {
	            try {
	                stmt.close();
	            } catch (Exception e) {}
	            stmt = null;
	        }
          if (currentCon != null) {

	            try {
	                currentCon.close();
	            } catch (Exception e) {
	            }
	            currentCon = null;

	        }

}

}
